/**
 * 实现 武器类 Weapon  类中有 public void use() 方法
 * 实现 Weapon  的子类 剑 Sword，重写use方法  System.out.println("Sword");
 * 实现 Weapon  的子类 刀 Knife，重写use方法  System.out.println("Knife");
 * 实现 角色 Role 类，该类使用 Weapon，但具体使用哪个子类由public void setWeapon(Weapon w) 方法注入， Role类实现
 * public void use() ，该方法调用Weapon类的use方法
 */

import java.util.Scanner;

class Weapon {
    public void use() {

    }
}

class Sword extends Weapon {
    @Override
    public void use () {
        System.out.println("Sword");
    }
}

class Knife extends Weapon {
    @Override
    public void use() {
        System.out.println("Knife");
    }
}

class Role {
    public void setWeapon(Weapon w) {
        w.use();
    }
    public void use() {
        Weapon weapon = new Weapon();
        weapon.use();
    }
}

public class Test2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Role r = new Role();
        r.setWeapon(new Knife());
        r.use();
        r.setWeapon(new Sword());
        r.use();
    }
}
